home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_mc.idb / usr / freeware / lib / mc / extfs / zip.z / zip
Encoding:
Text File  |  1998-10-28  |  1.5 KB  |  79 lines

  1. #! /bin/sh
  2. #
  3. # Written by Jakub Jelinek 1995
  4. #
  5. # (C) 1995 The Free Software Foundation.
  6. #
  7. #
  8. XZIP=zip
  9. XUNZIP=unzip
  10. XZIPINFO="unzip -Z"
  11. #
  12. #If you don't have zipinfo, set ZIPINFO=
  13. #
  14.  
  15. mczipfs_list ()
  16. {
  17. DOZIPINFO=no
  18. if test -n "$XZIPINFO"; then
  19.     DOZIPINFO=
  20.     $XZIPINFO -l $1 | nawk -v uid=${UID-0} -v zipfile=$1 -v xunzip=${XUNZIP-unzip} '
  21. /^Archive/ { next }
  22. /^[0-9]*\ file/ { next }
  23. /unx/ { 
  24. if ($1 ~ /^l/ ) {
  25.     arrow=" -> "
  26.     linkname=""
  27.     cmd=xunzip " -p " zipfile " " $10
  28.     cmd | getline linkname
  29. } else {
  30.     arrow=""
  31.     linkname=""
  32. }
  33.  
  34. if ($10 ~ /^\^/)
  35.     $10=substr($10, 2)
  36. split($8, a, "-")
  37. if (a[3] < 50)
  38.     a[3] = 2000 + a[3]
  39. else
  40.     a[3] = 1900 + a[3]
  41. printf "%s   1 %-8d %-8d %8d %3s %2d %4d %s %s%s%s\n", $1, uid, 0, $4, a[2], a[1], a[3], $9, $10, arrow, linkname
  42. next
  43. }
  44. {
  45. exit 214
  46. }' 2>/dev/null
  47.     if test $? = 214; then
  48.         DOZIPINFO=no
  49.     fi
  50. fi
  51. if test -n "$DOZIPINFO"; then
  52.     $XUNZIP -v $1 | nawk -v uid=${UID-0} '
  53. BEGIN { hyphens=0 }
  54. /^Archive/ { next }
  55. /^\ Length/ { next }
  56. /^\ ------/ { if (hyphens > 0) exit 0; hyphens=1; next }
  57. if (hyphens < 1) next;
  58. if ($8 ~ /^\^/)
  59.     $8=substr($8, 2)
  60. if ($8 ~ /\/$/)
  61.     printf "drwxr-xr-x   1 %-8d %-8d %8d %s %s %s\n", uid, 0, $1, $5, $6, $8
  62. else
  63.     printf "-rw-r--r--   1 %-8d %-8d %8d %s %s %s\n", uid, 0, $1, $5, $6, $8 
  64. }' 2>/dev/null
  65. fi
  66. }
  67.  
  68. mczipfs_copyout ()
  69. {
  70.     $XUNZIP -p $1 $2 > $3 2>/dev/null
  71. }
  72.  
  73. case "$1" in
  74.   list) mczipfs_list $2; exit 0;;
  75.   copyout) mczipfs_copyout $2 $3 $4; exit 0;;
  76. esac
  77. exit 1
  78.